#include<cstdio>
#include<algorithm>
using namespace std;
int n,q,t[20001];
struct node{
	int x,pos;
}a[20001];
bool cmp(node l,node r)
{
	return l.x<r.x||(l.x==r.x&&l.pos<r.pos);
}
int main()
{
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout); 
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i].x);
		a[i].pos=i; 
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++)
		t[a[i].pos]=i;
	while(q--)
	{
		int flag;
		scanf("%d\n",&flag); 
		if(flag==1)
		{
			int v,y;
			scanf("%d%d",&y,&v);
			int op;
			for(int i=1;i<=n;i++)
				if(a[i].pos==y)
				{
					op=i;
					break;
				 } 
			a[op].x=v;
			for(int i=op;i>=2;i--)
			{
				if(cmp(a[i],a[i-1]))
					swap(a[i],a[i-1]); 
				else
					break;
			}
			for(int i=op;i<=n-1;i++)
			{
				if(cmp(a[i+1],a[i]))
					swap(a[i],a[i+1]);
				else
					break;
			} 
			for(int i=1;i<=n;i++)
				t[a[i].pos]=i;
		}
		if(flag==2)
		{
			int x;
			scanf("%d",&x);
			printf("%d\n",t[x]); 
		}
	}
	return 0;
 } 

